1. Field
This field relates to computer software for selectively installing software products.
2. Description of the Related Art
Computer systems in general and International Business Machines (IBM) compatible personal computer systems in particular have attained widespread use for providing computer power to many segments of today's modern society. A personal computer system can usually be defined as a desk top, floor standing, or portable microcomputer that includes a system unit having a system processor and associated volatile and non-volatile memory, a display monitor, a keyboard, one or more diskette drives, a fixed disk storage device and an optional printer. One of the distinguishing characteristics of these systems is the use of a system board to electrically connect these components together. These personal computer systems are information handling systems which are designed primarily to give independent computing power to a single user (or a relatively small group of users in the case of personal computers which serve as computer server systems) and are inexpensively priced for purchase by individuals or small businesses. A personal computer system may also include one or a plurality of I/O devices (i.e. peripheral devices) which are coupled to the system processor and which perform specialized functions. Examples of I/O devices include modems, sound and video devices or specialized communication devices. Mass storage devices such as hard disks, CD-ROM drives and magneto-optical drives are also considered to be peripheral devices. Operating systems have evolved from single user, single task operating systems, such as MS-DOS (for Microsoft Disk Operating System), to single user, multitasking operating systems, such as Microsoft Windows NT™.
Companies that manufacture and sell personal computers strive to provide additional value to customers and differentiate their personal computer products from those of their competitors. One way in which companies customize their personal computer is by improving the BIOS (Basic Input/Output System) and providing device drivers that manage the basic operations of the computer system. Computer manufacturers also endeavor to add additional value to their customers by providing software, either software developed by the manufacturer or off-the-shelf applications that are provided to the customers at significant discounts compared to retail and other customer-oriented points of sale. This software is often pre-loaded on the computer system and provided to the customer at the time of purchase. However, for increased customer satisfaction, manufacturers also provide such software to customers after the computer system has been purchased. This after-sale software is provided on removable media (i.e., CD-ROM, floppy disk, etc.) or provided electronically via the Internet. In order to ensure that after-sale software is only installed on computers sold by the manufacturer, a system and method are needed to verify that the computer is a manufacturer-brand computer, otherwise, the software could be installed on competitors' computers decreasing the additional value provided to the manufacturer's customers. One manufacturer-specific component that may be present on a computer system sold by the manufacturer are customized device drivers loaded on the computer system during fabrication. Another manufacturer-specific component that may be present on a computer sold by the manufacturer is a customized BIOS provided by the manufacturer.
BIOS Use Under MS-DOS
MS-DOS uses BIOS (basic input/output system) to manage many basic operations of the system. During system initialization, or “boot,” a check is made of the hardware components before control is passed to a ROM BIOS boot program which typically checks the floppy drive (“drive A”) to see if it contains a formatted diskette. If drive A does not contain a formatted diskette, the ROM BIOS checks the fixed disk drive (“drive C”) to see if it is formatted. When a formatted disk is found, the ROM BIOS reads two hidden system files found on the disk—an input/output system file (IO.SYS or IBMBIO.COM) and a disk operating system file (MSDOS.SYS or IBMDOS.COM). The IO.SYS file is loaded into RAM and includes a system initialization routine (SYSINIT) that performs the remaining boot sequence. Part of the boot sequence includes loading MSDOS.SYS into RAM. MSDOS.SYS and the BIOS manage disk files, execute programs, and respond to hardware signals. Further along in the boot sequence, device drivers are loaded to control memory or hardware devices.
Under MS-DOS program files, BIOS, and device drivers cooperate in performing system and hardware functions. Machine specific information is often contained in the BIOS. This machine specific information includes the speed of the floppy drive and how the speed can be changed for a 3-mode floppy drive, whether the cache is turned on or off and how to turn the cache on or off, and many other machine specific pieces of information; such as Manufacturer assigned serial number (Unique ID) or service tag. Under MS-DOS, a program could simply execute the particular BIOS code to receive and set such machine specific information. However, as operating systems have evolved, more secure multitasking operating systems, such as Microsoft Windows NT™, are designed to prevent direct execution of BIOS code. While direct execution of BIOS code is not desirable to provide a more stable multitasking environment where many programs simultaneously share system resources, the information stored in a system's BIOS is still needed and may still need to be executed from time to time. While Windows NT™ prevents execution of the BIOS, it does allow virtual mode (DOS) and kernel mode device driver program files to read the BIOS information.
BIOS Use Under Windows NT™
Windows NT™ implements its security and protection capabilities by emulating system BIOS, thus preventing BIOS calls by high-level software programs. However, Windows NT™ is not able to emulate all BIOS calls which may be needed by the high-level software. Other ways have been developed to provide machine specific information on a secure operating system such as Windows NT™ without having the operating system actually execute the BIOS code.
One way an operating system program (or driver) can solve this problem is through a large branch table based on the hardware platform. The branch table could give the operating system program knowledge of every machine it is capable of supporting at the time the branch table is developed. A challenge of this method is that the branch table cannot be forward compatible with hardware developed after the branch table has been released.
A second way an operating system program can receive machine specific information is through implementing pseudo-code in the BIOS that the system is capable of interpreting. A pseudo-code approach allows the BIOS to handle requirements based on the requirements declared in the BIOS. A challenge to this approach, however, is that the pseudo-code and its corresponding interpreter must be robust enough to handle future hardware requirements developed after the pseudo-code and interpreter are released.
What is needed is a solution that determines if a computer system was manufactured by a given manufacturer to selectively install software on the computer system.